# 分析：①登录成功②用户名或密码错误③验证码错误
# 测试数据：
# 1.请求：用户名、密码、验证码
# 2.响应：预期结果
# 组装数据：每一种结果对应的场景放到一个序列里面
# 案例：记录登录功能测试用例数据
# 思考：测试用例？ 登录成功、用户名或密码错误、验证码错误
# 存放的数据：用户名、密码、验证码、预期结果
#
# 定义变量：列表
# 定义变量：列表
login_data1 = [  #每个子列表代表一组登录数据，包含 4 个字符串,列表是可变的（可修改元素）
    ["13800000001", "123456", "8888", "登录成功"],
    ["13800000001", "1234", "8888", "密码错误"],
    ["13800000001", "123456", "0000", "验证码错误"]
]
# 定义变量：元组
login_data2 = ( #定义一个元组,每个元素都是一个子元组,元组是不可变的（无法修改元素）
    ("13800000001", "123456", "8888", "登录成功"),
    ("13800000001", "1234", "8888", "密码错误"),
    ("13800000001", "123456", "0000", "验证码错误")
)
# 定义变量：列表元组
login_data3 = [ #外层是可变的列表（可添加 / 删除子元组），内层是不可变的元组，结合了列表和元组的特性。
    ("13800000001", "123456", "8888", "登录成功"),
    ("13800000001", "1234", "8888", "密码错误"),
    ("13800000001", "123456", "0000", "验证码错误")
]
# 定义变量：列表字典
login_data4 = [  #每个字典用键值对存储登录数据,外层列表可变，内层字典的键值对也可修改
    {"username": "13800000001", "password": "123456", "code": "8888", "result": "登录成功"},
    {"username": "13800000001", "password": "666666", "code": "8888", "result": "密码错误"},
    {"username": "13800000001", "password": "123456", "code": "0000", "result": "验证码错误"}
]

# 遍历数据3
# for i in login_data3:  #每次循环将子元组赋值给变量i
#     # print(i)#遍历一个一个元组
#     print(f"用户名：{i[0]} 密码：{i[1]} 验证码：{i[2]} 期望结果：{i[3]}")



# 遍历数据4
for i in login_data4:
    # print(i)
    # 通过字典的 get(key) 方法获取对应的值
    print(f"用户名：{i.get('username')} 密码：{i.get('password')} 验证码：{i.get('code')} 期望结果：{i.get('result')}")#get方法的好处是,若键不存在，返回None而不报错

    # print(f"用户名：{i['username']}")#通过字典的[key]语法获取值,直接输出用户名,这种方式若键不存在，会报错